package com.constructor;

public class Test01{
	public static void main(String[] args){
		//根据无参构造方法创建对象，肯定会调用无参构造方法！
		new B();
	}
}
 
class A{
	public A() {
		System.out.println("调用A的无参构造方法！");

	}

	// 一个类如果没有手动提供任何构造方法，系统会默认提供一个无参数构造方法。
	// 一个类如果手动提供了一个构造方法，那么无参数构造系统将不再提供。
	public A(int i){ //有参构造方法
		System.out.println("调用A的有参构造方法！");
	}
}
class B extends A{
	public B(){ //无参构造方法
		// 父类是有参构造方法，此时默认是是super()就会有问题，
        // 因为super()只能调用父类无参的无参构造方法
		// 所以此时的super就不能省略；并且写上时要写上参数，
       //  调用父类的有参构造方法，例如：super(100)
		super(100);
		System.out.println("调用B的无参构造方法！");
	}
}
//结果：我们只创建B对象；结果确实先调用A类的构造方法，才调用B类的构造方法
/*
	调用A的有参构造方法！
	调用B的无参构造方法！
*/